/**
 * Copyright (c) 2023 murenchao
 * taomu is licensed under Mulan PubL v2.
 * You can use this software according to the terms and conditions of the Mulan PubL v2.
 * You may obtain a copy of Mulan PubL v2 at:
 *       http://license.coscl.org.cn/MulanPubL-2.0
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 * See the Mulan PubL v2 for more details.
 */
package cool.taomu.box.jsch

import cool.taomu.box.inter.IDataSource
import java.util.Hashtable
import javax.inject.Inject
import javax.inject.Named
import javax.inject.Provider

abstract class AbsJschProvider implements Provider<IDataSource> {

	@Inject
	@Named("jsch.host")
	String host;
	@Inject
	@Named("jsch.username")
	String uname;
	@Inject
	@Named("jsch.passwd")
	String passwd;
	@Inject
	@Named("jsch.port")
	int port;

	abstract def void configure(Hashtable<String, String> sshconfig);

	override get() {
		var ds = new JschDataSource();
		ds.host = host;
		ds.uname = uname;
		ds.passwd = passwd;
		ds.port = port;
		ds.sshconfig = new Hashtable();
		this.configure(ds.sshconfig);
		return ds;
	}

}
